Integração R e Python

um caso de amor (e ódio)

Carolina Musso

José Vitor

Pedro Henrique

Rafael Lira

Vítor de Sousa

Tech Stack

Estrutura da apresentação

  • Motivação

  • Integração

  • Equivalência

  • Linguagem python

  • Scikit-learn

R ou Python?

Uma briga (quase) superada …

Uma briga (quase) superada …

Qual vocês acham que é o R?

Uma briga (quase) superada …

Fonte: DataCamp

Hadley Wichman

Cientista chefe na RStudio (futura Posit)

Não é uma batalha […] use o que te faz feliz!” , 2019

Diferenças, vantagens, desvantagens….

R

  • Usuários: Acadêmicos, estatísticos, biólogos, economistas …

  • Modelos em poucas linhas, possibilidade de escrever de várias formas.

  • Estatística e visualização (ggplot2!)

  • CRAN, GitHub: + pacotes, + fáceis de instalar e mais documentados.

Python

  • Usuários: Cient. computação, Eng. software …

  • Sensível a indentação.

  • ETL/ML workflows e ambientes de produção escaláveis

  • Pacotes/dependências mais “chatinhos”

E porque integrar R/python afinal?

Argumento 1: Uma pode ser melhor que a outra para um determinado problema.

Python melhor:

  • 2012: todos os requisitos.

R veio depois com:

  • Resumindo: O foco é resolver o problema. Leia o post.

E porque integrar R/python afinal?

  • Argumento 1: Uma pode ser melhor que a outra para um determinado problema.

    R melhor:

    RStudio recentemente:

    Shiny for Python

E porque integrar R/python afinal?

Argumento 2: A sua equipe pode ter pessoas de diferentes linguagens.

(ou uma mistura dos dois!)

Exemplos

1) A preparação dessa apresentação

2) Esta apresentação no rstudio::conf(2022)

Diversidade de pensamento

Mais chances de encontrar a melhor solução para um problema de forma mais eficiente. Leia

Basicamente …

Python no R

Reticulate:

Scripts do Python no R

  • Execução de scripts do Python interagindo com a sessão do R;
  • Tradução entre objetos do R e do Python (como entre data frames do R e do Pandas);
library(reticulate)
use_virtualenv("./venv", required = T)

# py_install("numpy");

repl_python()
exit
import pandas as pd
import numpy as np
py_arr = np.array([1, 2, 3, 4, 5])
for item in py_arr:
  print(item, end=", ")
1, 2, 3, 4, 5, 
r_arr <- as.vector(py$py_arr)
print(r_arr)
[1] 1 2 3 4 5

Rpy2:

Códigos do R no Python

Rcpp:

C++ no R

  • Veloz
  • Eficiente

DLL:

C++ no Python

Reticulate, quando tudo da errado

Falta de suporte oficial para R

Suporte oficial do Heroku